package chapter10.single_design_mode;
//1.单利设计模式
//1.1饿汉模式
//不提供构造器，而是提供一个方法---构造器私有化
//对象的实例在内部创建，并且设置为static
//保证该类只会存在一个对象
//适用于重量级对象，但有可能造成资源的浪费。
public class SingleTon01 {
    public static void main(String[] args) {
        //通过方法可以获取对象
        GirlFriend girlFriend = GirlFriend.getInstance();
        System.out.println(girlFriend);
        GirlFriend girlFriend1 = GirlFriend.getInstance();
        System.out.println(girlFriend);
        //证明是同一个对象
        System.out.println(girlFriend==girlFriend1);
    }
}
class GirlFriend{
    private String name;
   //保证只能存在一个对象
   //1.构造器私有化
  // 2.在类的内部创建(该对象是static)
  // 3.提供一个公用的static方法，返回gf对象
    private  static GirlFriend gf = new GirlFriend("tom");
    //为了能在静态方法中使用，返回gf对象，需要将其修饰为static，在类加载时就创建,即使没使用也会创建
   //因为是static
   private GirlFriend(String name) {
        this.name = name;
    }
    public static GirlFriend getInstance(){
     return gf;
    }

    @Override
    public String toString() {
        return "name="+ name;
    }
}